package com.waikuai.shop.service;

import com.waikuai.shop.dto.LoginRequest;
import com.waikuai.shop.dto.LoginResponse;
import com.waikuai.shop.dto.UserInfo;
import com.waikuai.shop.entity.User;

/**
 * 认证服务接口
 * @author waikuai
 */
public interface AuthService {

    /**
     * 用户登录
     * @param loginRequest 登录请求
     * @return 登录响应
     */
    LoginResponse login(LoginRequest loginRequest);

    /**
     * 用户登出
     * @param token JWT令牌
     */
    void logout(String token);

    /**
     * 刷新令牌
     * @param token 原令牌
     * @return 新令牌
     */
    String refreshToken(String token);

    /**
     * 根据账户查找用户
     * @param account 账户
     * @return 用户信息
     */
    User findByAccount(String account);

    /**
     * 根据用户名获取用户详细信息
     * @param username 用户名
     * @return 用户详细信息
     */
    UserInfo getUserInfoByUsername(String username);

    /**
     * 验证验证码
     * @param captcha 验证码
     * @param captchaKey 验证码键
     * @return 是否有效
     */
    boolean validateCaptcha(String captcha, String captchaKey);
}